package com.Sep_Twentyfour;

import java.util.Arrays;

/**
 *1652. 拆炸弹
 * 你有一个炸弹需要拆除，时间紧迫！你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。
 *
 * 为了获得正确的密码，你需要替换掉每一个数字。所有数字会 同时 被替换。
 *
 * 如果 k > 0 ，将第 i 个数字用 接下来 k 个数字之和替换。
 * 如果 k < 0 ，将第 i 个数字用 之前 k 个数字之和替换。
 * 如果 k == 0 ，将第 i 个数字用 0 替换。
 * 由于 code 是循环的， code[n-1] 下一个元素是 code[0] ，且 code[0] 前一个元素是 code[n-1] 。
 *
 * 给你 循环 数组 code 和整数密钥 k ，请你返回解密后的结果来拆除炸弹！
 *
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/defuse-the-bomb
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 2022/09/24 10:57
 */

public class Solution1652 {

    public int[] decrypt(int[] code, int k) {
        int n=code.length;
        int[] ans=new int[n];
        if (k==0) return ans;
        int d=k>0?k:-k;
        for (int i=0;i<n;i++)
        {
            for (int j=1;j<=d;j++)
            {
                int index=k>0?(i+j+n)%n:(i-j+n)%n;
                ans[i]+=code[index];
            }
        }
        return ans;
    }


    public static void main(String[] args) {
        Solution1652 solution1652=new Solution1652();
        int[] code={5,7,1,4};
        System.out.println(Arrays.toString(solution1652.decrypt(code, 3)));
    }
}
